package com.nova.edc.service.system;

import com.nova.edc.model.system.CustomerInfo;
import com.nova.edc.model.system.Login;
import com.nova.edc.model.util.CountModel;
import com.nova.frame.dao.pager.Page;
import com.nova.frame.dao.pager.PageList;

import java.util.List;
import java.util.Map;

public interface CustomerInfoService {

    CustomerInfo getById(int id);

    CustomerInfo getByCompanyCode(int companyCode);

    CustomerInfo getByIdused(int id);

    List<CustomerInfo> findAllCustomerInfo();

    // 根据集团和登录用户获取所有的客户信息
    List<CustomerInfo> findCustomerInfoByGroupAndLogin(
            Integer groupCode, String username);

    // 根据登录用户获取所有的客户信息
    List<CustomerInfo> findCustomerInfoByLogin(String username);

    // 插入新的客户信息
    CustomerInfo insert(CustomerInfo customerInfo);

    // 更新数据
    int update(CustomerInfo customerInfo);

    // 分页获取客户信息数据
    PageList<CustomerInfo> findCustomerInfoPageList(
            CustomerInfo customerInfo, Page page, String sidx, String sord);

    // 分页获取相应用户角色的客户信息数据
    PageList<CustomerInfo> findCustomerInfoPageListByRole(Login login, Integer companyCode,
                                                          String customerName, Integer customerinfotype, Page page, String sidx, String sord);

    // 获取所有相应用户角色的客户信息数据
    List<CustomerInfo> findCustomerInfoListByRole(String addBy,
                                                  String customerName, String sidx, String sord);

    // 删除数据
    int deleteById(int id);

    // 验证公司的番号是否存在，返回为真表示数据不存在
    boolean isExistCompanyCode(Integer companyCode, Integer customerinfoid);

    // 分页获取最近需要缴费的用户数据
    PageList<CustomerInfo> findPaymentPageList(String addBy,
                                               Integer year, Integer month, String customerName, Page page);

    // 根据地区和用户名获取所有
    List<CustomerInfo> findCustomerByCity(Login login, String city);

    CustomerInfo insertByExcel(CustomerInfo customerInfo);

    void insertByExcel(List<CustomerInfo> list, Login login);

    //查询所有公司名称
    List<String> findAllCusomerName();

    //根据公司名称查询ID
    int findIdByName(String name);

    List<String> findAllProvince();

    List<String> findCitysByProvince(String province);

    List<String> findDistrictsByCity(String city);

    PageList<CustomerInfo> findByCountModelPagelist(Page page, CountModel countModel, Login login);

    List<CustomerInfo> findByGroupcode(Integer groupcode);

    List<Integer> getCustomerinfoId(List<CustomerInfo> list);

    CustomerInfo testInsert(CustomerInfo customerInfo);

    List<CustomerInfo> findByCodeName(Integer companyCode, String customerName);

    List<CustomerInfo> findByCodeNameLike(CustomerInfo customerInfo);

    List<CustomerInfo> findByProvince(String province);

    List<Map<String, Object>> findAreaNum();

    List<CustomerInfo> findByGroupProvince(Integer groupcode, String province);

    List<CustomerInfo> findByGroupName(Integer groupcode, String customerName);

}
